home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / flashfxp_overflow.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  132 lines

  1. #
  2. # (C) Tenable Network Security
  3. #
  4. # Ref: 
  5. #
  6. # Date: Mon, 09 Jun 2003 12:19:39 +0900
  7. # From: ":: Operash ::" <nesumin@softhome.net>
  8. # To: bugtraq@securityfocus.com
  9. # Subject: [FlashFXP] Two Buffer Overflow Vulnerabilities
  10. #
  11.  
  12. if(description)
  13. {
  14.  script_id(11710);
  15.  script_bugtraq_id(7857, 7859);
  16.  script_version("$Revision: 1.4 $");
  17.  
  18.  name["english"] = "FlashFXP Overflow";
  19.  
  20.  script_name(english:name["english"]);
  21.  
  22.  desc["english"] = "
  23. The remote host is running FlashFXP - a FTP client.
  24.  
  25. There is a flaw in the remote version of this software which may 
  26. allow an attacker to execute arbitrary code on this host.
  27.  
  28. To exploit it, an attacker would need to set up a rogue FTP
  29. server and have a user on this host connect to it.
  30.  
  31. Solution : Upgrade to version 2.1 or newer
  32. Risk factor : High";
  33.  
  34.  
  35.  
  36.  script_description(english:desc["english"]);
  37.  
  38.  summary["english"] = "Determines the presence of FlashFXP";
  39.  
  40.  script_summary(english:summary["english"]);
  41.  
  42.  script_category(ACT_GATHER_INFO);
  43.  
  44.  script_copyright(english:"This script is Copyright (C) 2003 Tenable Network Security");
  45.  family["english"] = "Windows";
  46.  script_family(english:family["english"]);
  47.  
  48.  script_dependencies("netbios_name_get.nasl",
  49.               "smb_login.nasl","smb_registry_access.nasl");
  50.  script_require_keys("SMB/name", "SMB/login", "SMB/password",
  51.              "SMB/WindowsVersion",
  52.              "SMB/registry_access");
  53.  
  54.  script_require_ports(139, 445);
  55.  exit(0);
  56. }
  57.  
  58.  
  59. include("smb_nt.inc");
  60.  
  61.  
  62.  
  63. rootfile = registry_get_sz(key:"SOFTWARE\Microsoft\Windows\CurrentVersion", item:"ProgramFilesDir");
  64. if(!rootfile)
  65. {
  66.  exit(0);
  67. }
  68. else
  69. {
  70.  share = ereg_replace(pattern:"([A-Z]):.*", replace:"\1$", string:rootfile);
  71.  exe =  ereg_replace(pattern:"[A-Z]:(.*)", replace:"\1\FlashFXP\FlashFXP.exe", string:rootfile);
  72.  }
  73.  
  74.  
  75.  
  76.  
  77. name     =  kb_smb_name();
  78. login    =  kb_smb_login();
  79. pass      =  kb_smb_password();
  80. domain     =  kb_smb_domain();
  81. port    =  kb_smb_transport();
  82. if(!port) port = 139;
  83.  
  84.  
  85.  
  86. if(!get_port_state(port))exit(0);
  87.  
  88. soc = open_sock_tcp(port);
  89. if(!soc)exit(0);
  90.  
  91.  
  92.  
  93. r = smb_session_request(soc:soc, remote:name);
  94. if(!r)exit(0);
  95.  
  96. prot = smb_neg_prot(soc:soc);
  97. if(!prot)exit(0);
  98.  
  99. r = smb_session_setup(soc:soc, login:login, password:pass, domain:domain, prot:prot);
  100. if(!r)exit(0);
  101.  
  102. uid = session_extract_uid(reply:r);
  103.  
  104.  
  105.  
  106. r = smb_tconx(soc:soc, name:name, uid:uid, share:share);
  107. tid = tconx_extract_tid(reply:r);
  108. if(!tid)exit(0);
  109.  
  110. fid = OpenAndX(socket:soc, uid:uid, tid:tid, file:exe);
  111. if(fid != 0)
  112. {
  113.  fsize = smb_get_file_size(socket:soc, uid:uid, tid:tid, fid:fid);
  114.  
  115.  off = fsize - 16384;
  116.  data = ReadAndX(socket:soc, uid:uid, tid:tid, fid:fid, count:16384, off:off);
  117.  data = str_replace(find:raw_string(0), replace:"", string:data);
  118.  
  119.  version = strstr(data, "FileVersion");
  120.  if(!version)exit(0);
  121.  for(i=strlen("FileVersion");i<strlen(version);i++)
  122.  {
  123.  if((ord(version[i]) < ord("0") ||
  124.     ord(version[i]) > ord("9")) && 
  125.     version[i] != ".")break;
  126.  else 
  127.    v += version[i];
  128.  if(ereg(pattern:"^(1\..*|2\.0\.)", string:v))security_hole(port);
  129. }
  130.